/*
 * IComumFacade.java
 *
 * Created on October 2, 2007, 7:55 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package petstore.business;

import java.util.List;
import petstore.model.Animal;
import petstore.model.AtividadeProfissional;
import petstore.model.Baia;
import petstore.model.Cargo;
import petstore.model.Cliente;
import petstore.model.CodeData;
import petstore.model.Empresa;
import petstore.model.Especie;
import petstore.model.Exame;
import petstore.model.Funcionario;
import petstore.model.Pelagem;
import petstore.model.Porte;
import petstore.model.Raca;
import petstore.model.TipoAtendimento;
import petstore.model.TipoTelefone;
import petstore.model.UF;
import petstore.model.Usuario;
import petstore.model.Vacina;
import petstore.model.Vermifugo;

/**
 *
 * @author Tom Hayden
 */
public interface IComumFacade {
    
    public abstract List executeNativeQuery(String query);
    public abstract void ativarInativarBean(CodeData bean);

    public abstract Empresa getConfiguracaoEmpresa();

    public abstract Integer incluirCliente(Cliente cliente);
    public abstract Integer alterarCliente(Cliente cliente);
    public abstract Cliente getCliente(Integer id);

    public abstract List<Cliente> listarCliente(String nome);
    
    public abstract Integer incluirAnimal(Animal animal);
    public abstract Integer alterarAnimal(Animal animal);
    public abstract Animal getAnimal(Integer id);
    public abstract List<Animal> listarAnimal(String nome);
    public abstract List<Animal> listarAnimalPorCliente(String nome, Integer idCliente);
    
    public abstract Integer incluirTipoTelefone(TipoTelefone tipoTelefone);
    public abstract Integer alterarTipoTelefone(TipoTelefone tipoTelefone);
    public abstract TipoTelefone getTipoTelefone(Integer id);

    public abstract List<TipoTelefone> listarTipoTelefone(String descricao);
    
    public abstract List<Especie> listarEspecie();
    public abstract List<Raca> listarRaca();
    public abstract List<Porte> listarPorte();
    public abstract List<Pelagem> listarPelagem();

    public abstract Especie getEspecie(Integer id);
    public abstract Raca getRaca(Integer id);
    public abstract Porte getPorte(Integer id);
    public abstract Pelagem getPelagem(Integer id);
    
    public abstract Integer incluirVermifugo(Vermifugo vermifugo);
    public abstract Integer alterarVermifugo(Vermifugo vermifugo);
    public abstract Vermifugo getVermifugo(Integer id);
    public abstract List<Vermifugo> listarVermifugo();
    
    public abstract Vacina getVacina(Integer id);
    public abstract List<Vacina> listarVacina();
    
    public abstract Exame getExame(Integer id);
    public abstract List<Exame> listarExame();
    
    public abstract Integer incluirAtividadeProfissional(AtividadeProfissional atividadeProfissional);
    public abstract Integer alterarAtividadeProfissional(AtividadeProfissional atividadeProfissional);
    public abstract AtividadeProfissional getAtividadeProfissional(Integer id);
    public abstract List<AtividadeProfissional> listarAtividadeProfissional(String descricao);
    
    public abstract Integer incluirBaia(Baia baia);
    public abstract Integer alterarBaia(Baia baia);
    public abstract Baia getBaia(Integer id);
    public abstract List<Baia> listarBaia(String descricao);
    
    public abstract Integer incluirCargo(Cargo cargo);
    public abstract Integer alterarCargo(Cargo cargo);
    public abstract Cargo getCargo(Integer id);
    public abstract List<Cargo> listarCargo(String descricao);
    
    public abstract Integer incluirUF(UF uf);
    public abstract Integer alterarUF(UF uf);
    public abstract UF getUF(Integer id);
    public abstract List<UF> listarUF(String descricao);
    
    public abstract Integer incluirTipoAtendimento(TipoAtendimento tipoAtendimento);
    public abstract Integer alterarTipoAtendimento(TipoAtendimento tipoAtendimento);
    public abstract TipoAtendimento getTipoAtendimento(Integer id);
    public abstract List<TipoAtendimento> listarTipoAtendimento();
    
    public abstract List<Funcionario> listarAtendentesPorTipoAtendimento(TipoAtendimento tipoAtendimento);
    public abstract Funcionario getFuncionarioPorUsuario(Usuario usuario);
        
}
